package com.zzyl.service;

import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.task.Task;

import java.util.List;
import java.util.Map;

public interface WorkFlowService {
    /**
     * 部署工作流
     * @param bpmnResource 工作流xml（bpmn图片）
     * @param imgResource 工作流文件
     * @param bpmnNmae 工作流名称
     */
    void deploy(String bpmnResource,String imgResource,String bpmnNmae);

    /**
     * 删除部署
     * @param deploymentId 工作流部署后的对应act_deployment表中的id；
     */
    void deleteDeployment(String deploymentId);

    /**
     * 启动工作流实例
     * @param precessKey 工作流实例名称
     * @param businessKey 该实例绑定的唯一id
     * @param variables 整个工作流启动后传递的变量集合
     */

    void startProcess(String precessKey , String businessKey, Map <String,Object> variables);

    /**
     * 根据代办人id查询其当前所有代办任务
     * @param assignee
     */
    List<Task> queryRuntimeProcess(String assignee);

    void completeTask(String assignee,Map<String,Object> variables);

    void completeTaskByTaskId(String taskId,Map<String,Object> variables);


    /**
     * 拒绝任务
     * @param taskId 任务id
     * @param reason 拒绝原因
     */
    void rejectTask(String taskId,String reason);

    /**
     * 分页查询当前登录人待办任务
     * @param pageNum
     * @param pageSize
     * @param assgineeId 登录人id，绑定的是当前任务节点的待办人id
     * @return
     */
    List<Task> queryTaskByPage(Integer pageNum, Integer pageSize,String assgineeId);

    List<HistoricTaskInstance> queryHistoryTask(Integer pageNum, Integer pageSize,String assgineeId);
}
